Homebrew on Linux (Linuxbrew) 實用筆記
一、 前言:為什麼要在 Linux 上用 Homebrew?
傳統上 Homebrew 是 macOS 的標配,但它現在對 Linux 的支援(前身為 Linuxbrew)已經非常成熟。
最大的痛點解決方案:沒有 sudo 權限的伺服器。 當你在公司或學校的共用伺服器(特別是祖傳的 CentOS 7 或舊版 RHEL)上工作時,系統自帶的套件通常老得掉牙,而你又沒有 root 權限去跑 apt 或 yum 裝新版軟體。Homebrew 完美解決了這個問題——它可以把所有最新版的 CLI 工具(如 git, python, node, fzf, ripgrep)全部安裝在你自己的「家目錄」下,完全不污染或干擾底層系統。
二、 起手式:無 Root 權限的環境安裝
官方的自動安裝腳本預設會嘗試使用 sudo 把系統裝在 /home/linuxbrew/.linuxbrew。若你沒有 root 權限,腳本會自動退而求其次,將其安裝在你的家目錄下(通常是 ~/.linuxbrew)。
1. 執行官方化安裝腳本
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
(執行過程中若提示輸入 sudo 密碼,可以直接按 Enter 略過,它會自動 fallback 到本機家目錄安裝)
2. 寫入環境變數 (極度重要) 安裝完成後,Homebrew 不會自動生效,你必須將它加入你的環境變數中。請依照安裝完成最後畫面的提示,將以下內容加入你的 ~/.bashrc 或 ~/.zshrc:
# 讓系統啟動時自動載入 Homebrew 的環境變數 (以 bash 為例)
echo 'eval "$(/home/你的帳號/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
source ~/.bashrc
3. 驗證安裝
brew doctor
如果顯示 Your system is ready to brew.,代表你已經擁有完全屬於自己的高階套件管理員了!
三、 基礎維護:日常套件管理
Homebrew 的語法極度直覺,且因為是安裝在使用者目錄,所有指令都不需要加 sudo。
1. 軟體安裝與移除
# 搜尋套件
brew search <關鍵字>
# 安裝套件
brew install <套件名稱>
# 移除套件
brew uninstall <套件名稱>
# 列出所有你自己「主動安裝」的套件 (不包含相依套件,非常適合盤點環境)
brew leaves
2. 系統與軟體更新
# 更新 Homebrew 本身與遠端套件清單
brew update
# 升級所有已安裝的套件至最新版
brew upgrade
# 只升級特定套件
brew upgrade <套件名稱>
四、 釋放硬碟空間:快取清理
Homebrew 在編譯或下載預先編譯的二進位檔 (Bottle) 時,會將檔案快取在 ~/.cache/Homebrew 裡,久了也會吃掉不少空間。
# 安全清理:清除舊版本的快取,保留最新版
brew cleanup
# 深度清理:連同最新的快取一起刪掉 (-s = scrub)
brew cleanup -s
# 檢查一下目前 Homebrew 佔用了多少硬碟空間
brew info
五、 進階技巧與避坑指南
1. 解決老舊系統的 C 函式庫相依問題 (gcc / glibc)
在極度老舊的伺服器上,你用 brew 安裝新版軟體後,執行時可能會遇到 lib64/libc.so.6: version 'GLIBC_2.28' not found 這種錯誤。 這代表底層系統的 C 語言庫太舊了。Homebrew 的解法非常暴力且有效——它會自己裝一套新版的 gcc 放在你的家目錄!
# 遇到編譯或執行錯誤時,主動透過 brew 安裝現代版的 gcc
brew install gcc
裝完後,Homebrew 管理的軟體就會自動去吃這套新版的函式庫,不再受限於底層系統。
2. 環境代碼化:Brewfile (IaC 實踐)
如果你經常需要在不同的伺服器或開發機上切換,每次都要重新 brew install 幾十個工具非常痛苦。Homebrew 內建了類似 requirements.txt 或 package.json 的機制,稱為 Brewfile。
-
匯出當前環境:
# 把你現在裝的所有套件清單,倒出成一個名為 Brewfile 的檔案brew bundle dump -
在新機器上一鍵還原: 把這個
Brewfile丟到新的機器上,然後在同一個目錄下執行:# Homebrew 會自動讀取 Brewfile,把裡面的東西全部裝好brew bundle
這招對於無 Root 權限的開發者來說,是快速複製個人熟悉開發環境(Dotfiles 哲學)的終極殺手鐧。